import pandas as pd
import numpy as np

# pandas分箱操作
"""
-- 分箱操作就是将连续型数据离散化
-- 分箱操作分别等距分箱和等频分箱
-- pd.cut()函数可以实现分箱操作
-- pd.qcut()函数可以实现分箱操作，且分箱边界是均匀分布的
"""
data = np.random.randint(0, 100, size=(5, 3))
df = pd.DataFrame(data, columns=['python', 'pandas', 'C'])
print(df)

print('\n等宽分箱')
print(df.python)
s = pd.cut(df.python, bins=4)
print(s)
print(s.value_counts())

# 解释参数
s1 = pd.cut(df.python,  # 待分箱数据
            bins=[0, 30, 60, 80, 100],  # 分箱的个数
            right=False,  # 是否包括右边界
            labels=['A', 'B', 'C', 'D'])  # 分箱后分类的标签
print(s1)

# 等频分箱
print('\n等频分箱')
s2 = pd.qcut(df.python,  # 待分箱数据
             q=4,  # 4等分
             labels=['A', 'B', 'C', 'D'])  # 分箱后分类的标签
print(s2)
